#include <stdlib.h>
#include <signal.h>
#include <gtk/gtk.h>

/** закрытие окна :=: завершение приложения
*/
void
destroy_cb(GtkWidget *widget,gpointer data) {
	g_debug("destroy_cb\n");
	gtk_main_quit();
//	exit(0);
}

/** нештатное (например по кнопке Ctrl-C) завершение
*/
void
signal_exit_cb(int signum) {
	g_debug("signal_exit_cb %d\n",signum);
	exit(1);
}

/** любое неаварийное завершение работы
*/
void
atexit_cb() {
	g_debug("atexit_cb\n");
}

int
main(int argc,char *argv[]) {
	GtkWidget *window;
	atexit(atexit_cb);
	signal(SIGINT,signal_exit_cb);	// Ctrl-C с клавиатуры
	signal(SIGTERM,signal_exit_cb);	// "мягкий" сигнал от системы 
	signal(SIGKILL,signal_exit_cb);	// сигнал на выход в приказном порядке
												// все сигналы см. man 7 signal
	/** общая инициализация	
	*/
	gtk_init(&argc,&argv);
	
	/** создание/загрузка виджетов
	*/
	window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

	/** привязка сигналы
	*/
	g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destroy_cb),NULL);
	
	/** отобразить виджеты по мере необходимости
	*/
	gtk_widget_show_all(window);
	
	/** основной цикл работы
	*/
	g_print("gtk+ skeleton\n");
	gtk_main();
	g_print("finalize\n");
	return 0;
}

